added some development tools
[windows-sources.git] / developer / Samples / NET 4.6 / Samples for Parallel / AsyncDownload / AsyncDownload_VisualBasic / Module1.vb
blob839dcaf12ca735277ea78efea13f02ce20a9970d
1 '--------------------------------------------------------------------------
2 '
3 ' Copyright (c) Microsoft Corporation. All rights reserved.
4 '
5 ' File: Program.cs
7 '--------------------------------------------------------------------------
9 Imports System.Net
10 Imports System.Collections.Generic
11 Imports System.Threading.Tasks
13 Module Module1
15 Sub Main()
16 ' NOTE: Synchronous .Wait() calls added only for demo purposes
18 ' Single async request
19 Download("http://www.microsoft.com").ContinueWith(AddressOf CompletedDownloadData).Wait()
21 ' Single async request with timeout
22 Download("http://www.microsoft.com").WithTimeout(New TimeSpan(0, 0, 0, 0, 1)).ContinueWith(AddressOf CompletedDownloadData).Wait()
24 ' Concurrent async requests
25 Task.Factory.ContinueWhenAll(
27 Download("http://blogs.msdn.com/pfxteam"),
28 Download("http://blogs.msdn.com/nativeconcurrency"),
29 Download("http://exampleexampleexample.com"),
30 Download("http://msdn.com/concurrency"),
31 Download("http://bing.com")
32 }, AddressOf ConcurrentTasksCompleted).Wait()
34 ' Serial async requests
35 Task.Factory.TrackedSequence(
36 Function() Download("http://blogs.msdn.com/pfxteam"),
37 Function() Download("http://blogs.msdn.com/nativeconcurrency"),
38 Function() Download("http://exampleexampleexample.com"),
39 Function() Download("http://msdn.com/concurrency"),
40 Function() Download("http://bing.com")
41 ).ContinueWith(AddressOf SerialTasksCompleted).Wait()
43 ' Done
44 Console.WriteLine()
45 Console.WriteLine("Press <enter> to exit.")
46 Console.ReadLine()
47 End Sub
49 Function Download(ByVal url As String) As Task(Of Byte())
50 Dim wc As New WebClient
51 Return wc.DownloadDataTask(url)
52 End Function
54 Sub CompletedDownloadData(ByVal task As Task(Of Byte()))
55 If task.Status = TaskStatus.RanToCompletion Then
56 Console.WriteLine("Request succeeded: {0}", task.Result.Length)
57 ElseIf task.Status = TaskStatus.Faulted Then
58 Console.WriteLine("Request failed: {0}", task.Exception.InnerException)
59 ElseIf task.Status = TaskStatus.Canceled Then
60 Console.WriteLine("Request was canceled")
61 End If
62 End Sub
64 Sub SerialTasksCompleted(ByVal tasks As Task(Of IList(Of Task)))
65 Dim failures = tasks.Result.Where(Function(t) t.Exception IsNot Nothing).Count()
66 Console.WriteLine("Serial result: {0} successes and {1} failures", tasks.Result.Count() - failures, failures)
67 End Sub
69 Sub ConcurrentTasksCompleted(ByVal tasks As Task(Of Byte())())
70 Dim failures = tasks.Where(Function(t) t.Exception IsNot Nothing).Count()
71 Console.WriteLine("Concurrent result: {0} successes and {1} failures", tasks.Length - failures, failures)
72 End Sub
73 End Module